์์ ๋ถ ๊ธฐ๋ก๊ณต์ ๊ด ์์ดํ ๊ฒ์ (ํํ์ด์ง ์ ๊ณต์ฉ)
- URI : /api/search
- Method : GET
- Parameter Type : query string
- ๊ฐ๋ฐ์๋ฒ ๊ธฐ์ค ์์ฒญ URL
- https://uilib-user.eco-dev.kr/archive/api/search
๊ฐ๋ฐ ์๋ฒ : https://uilib-user.eco-dev.kr/archive
์ด์ ์๋ฒ : https://www.uilib.go.kr/archive
- ํ์ฌ ๋ฐฐํฌ๋์ง ์์
๐ Query Parameters
| ํ๋ผ๋ฏธํฐ๋ช | ํ์ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ ํ์ฌํญ | ์ค๋ช |
|---|---|---|---|---|---|
keyword |
String | ๋ฐํ์ | - | - | ๊ฒ์ ํค์๋ |
withInKeyword |
String | ์ ํ | - | - | ๊ฒฐ๊ณผ๋ด ์ฌ๊ฒ์ ํค์๋ |
sortField |
String | ์ ํ | - | ca, an | ์ ๋ ฌ ํ๋ |
orderType |
String | ์ ํ | as | as, de | ์ ๋ ฌ ํ์ |
page |
int | ์ ํ | 1 | ์ต๋ 100 | ์ด๋ํ ํ์ด์ง |
sizePerPage |
int | ์ ํ | 10 | ์ต๋ 50 | ํ ํ์ด์ง๋น ํ๊ธฐ๋๋ ์์ดํ ๊ฑด ์ |
ํ๋ ์์ธ ์ค๋ช
keyword
๊ฒ์์ด
๐ก ๊ฒฐ๊ณผ๋ด ์ฌ๊ฒ์ ํค์๋์ธ withInKeyword ์
๋ ฅ์์๋ keyword ๊ฐ ํ์ ์
๋๋ค.
sortField
์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
ca: ๋ฑ๋ก์ผan: ์์ดํ ๋ช ([๋๊ดํธ] ๋ฌด์)
orderType
์ ๋ ฌ ์์๋ฅผ ์ง์ ํฉ๋๋ค.
as: ์ค๋ฆ์ฐจ์ ์ ๋ ฌde: ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
page
- ์กฐํํ ํ์ด์ง ๋ฒํธ
- 1๋ถํฐ ์์ํ๋ฉฐ ์ต๋ 100ํ์ด์ง๊น์ง ์กฐํ ๊ฐ๋ฅ
sizePerPage
- ํ ํ์ด์ง์ ํ์ํ ํญ๋ชฉ ์
- ์ต์ 1๊ฐ๋ถํฐ ์ต๋ 50๊ฐ๊น์ง ์ค์ ๊ฐ๋ฅ
๐ ์์ฒญ ์์
GET /api/search?keyword=๊ฒ์์ด&withInKeyword=์ฌ๊ฒ์์ด&sortField=ca&orderType=DESC&page=1&sizePerPage=20
Javascript Fetch ๊ธฐ์ค ์์
const url = 'https://uilib-user.eco-dev.kr/archive/api/search';
const options = {method: 'GET'};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
๐ฌ ์๋ต ํ๋
โ Response Body ๊ตฌ์กฐ ์์ - 200 OK
{
"searchList": [...],
"totalCount": 100,
"totalPage": 10
}
Root ๊ฐ์ฒด
| ํ๋๋ช | ํ์ | ์ค๋ช |
|---|---|---|
searchList |
List |
๊ฒ์ ๊ฒฐ๊ณผ ๋ชฉ๋ก |
totalCount |
int | ์ ์ฒด ๊ฒ์ ๊ฒฐ๊ณผ ์ |
totalPage |
int | ์ ์ฒด ํ์ด์ง ์ |
Item ๊ฐ์ฒด
| ํ๋๋ช | ํ์ | ํ์ | ์ค๋ช |
|---|---|---|---|
itemIdentifier |
String | ํ์ | ์์ดํ ์ฝ๋ |
itemName |
String | ํ์ | ์์ดํ ๋ช |
produceYear |
String | ์ ํ | ์์ฐ์ฐ๋ |
thumbnailFileName |
String | ์ ํ | ์ธ๋ค์ผ ํ์ผ๋ช |
creatorDetailInfo |
String | ์ ํ | ์์ฐ์ ์ ๋ณด (~ ์ธ n๊ฑด) |
archiveSourceInfo |
String | ์ ํ | ์์์ฅ์ฒ ์ ๋ณด (~ ์ธ n๊ฑด) |
ํ๋ ์์ธ ์ค๋ช
itemIdentifier
์์ดํ ์ฝ๋ (์์ธ๋ณด๊ธฐ ์ด๋์ ์ฌ์ฉ)
์์ธ ๋ณด๊ธฐ URL : {๋๋ฉ์ธ์ฃผ์} + '/page/items/' + {์์ดํ ์ฝ๋}
ํธ์ถ ์์
https://uilib-user.eco-dev.kr/archive/page/items/IT00002594
produceYear
์์ฐ์ฐ๋
null ํน์ ๋น๊ฐ ๋ฐํ์ ๋ฏธ์ ์ผ๋ก ํ๊ธฐ
thumbnailFileName
์ธ๋ค์ผ ์ด๋ฏธ์ง ํ์ผ๋ช
์ด๋ฏธ์ง ํ๊ธฐ์ {๋๋ฉ์ธ์ฃผ์}+'/upload/image/th/' + {ํ์ผ๋ช }
ํธ์ถ ์์
https://uilib-user.eco-dev.kr/archive/upload/image/th/0933e2764e554b1395f04c917ec4f722.png
โ Response Body ๊ตฌ์กฐ ์์ - 400 Bad Request
{
"errorCode": null,
"message": "๋ฉ์ธ์ง",
"errorResult": null,
"fieldErrors": [...]
}
๐ ์๋ต ์์
์ฑ๊ณต์
- 200 OK - ๊ฒ์๊ฒฐ๊ณผ๊ฐ ์์๋
{
"totalCount": 0,
"searchList": [],
"totalPage": 1
}
- 200 OK - ๊ฒ์๊ฒฐ๊ณผ ์กด์ฌ์
{
"totalCount": 3,
"searchList": [
{
"itemIdentifier": "IT00002594",
"itemName": "์์ ๋ถ ๊ธฐ๋ก๊ณต์ ๊ด ๋ฐ์ดํฐ ํ
์คํธ์ฉ",
"produceYear": "2005",
"thumbnailFileName": "0933e2764e554b1395f04c917ec4f722.png",
"creatorDetailInfo": "๊ธฐ๋ก๋ฐ๊ตด๋จ ์ธ 1๊ฑด",
"archiveSourceInfo": "๊ณ ๋๋ฏธ์ ์ธ 1๊ฑด"
},
{
"itemIdentifier": "IT00002550",
"itemName": "[์์ ๋ถ ์ ํฌ์ ์ ํ ๋ณต๊ตฌ] ์ ํ ๋์ ์ฌ๊ฑด๊ณผ ๋ฏธ๊ตฐ ์ฃผ๋",
"produceYear": null,
"thumbnailFileName": null,
"creatorDetailInfo": "์์ ๋ถ๊ธฐ๋ก๊ณต์ ๊ด",
"archiveSourceInfo": "์์ ๋ถ๊ธฐ๋ก๊ณต์ ๊ด"
},
{
"itemIdentifier": "IT00002556",
"itemName": "[์์ ๋ถ ์ฃผ๋ ๋ฏธ๊ตฐ ์บ ํ] ์บ ํ ๋ ๋ํด๋ผ์ฐ๋(CRC) : ๋์ฌ ๋ณธ๋ถ๊ธฐ์ง์ ์ญํ ๊ณผ ์ฒ ์",
"produceYear": null,
"thumbnailFileName": null,
"creatorDetailInfo": "์์ ๋ถ๊ธฐ๋ก๊ณต์ ๊ด",
"archiveSourceInfo": "์์ ๋ถ๊ธฐ๋ก๊ณต์ ๊ด"
}
],
"totalPage": 1
}
์คํจ์
๐ก 4xx ๋ก ์๋ต์ front-end ์์ ์๋ชป๋ ์์ฒญ์ ํ ๊ฒฝ์ฐ ์ด๋
์ ์ ์๊ฒ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ์ง ๋ง๊ณ (ํ๋ฉด๋จ)์ฝ๋๋ฅผ ํ์ธ ํ ์์ ๋ฐ๋๋๋ค.
- 400 Bad Request - ์๋ชป๋ ๋ฒ์ ํน์ ์ง์ ๋์ง ์์ ๋ฌธ์๋ฅผ ์ ๋ ฅ์
{
"errorCode": null,
"message": "์ ๋ ฌ ํ๋๋ ca an ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.",
"errorResult": null,
"fieldErrors": null
}
๋ค๋ฅธ ์์
{
"errorCode": null,
"message": "๊ฒฐ๊ณผ๋ด ์ฌ๊ฒ์ ํค์๋๋ฅผ ์
๋ ฅํ๋ ค๋ฉด ํตํฉ๊ฒ์ ํค์๋๋ฅผ ํจ๊ป ์
๋ ฅํด์ผ ํฉ๋๋ค.",
"errorResult": null,
"fieldErrors": null
}
- 400 Bad Request - ์๋ชป๋ query string ๊ฐ ์ ๋ ฅ - ๋ฌธ์์ด์ int ์ ๋ฃ์ ๋
{
"errorCode": null,
"message": "Invalid Input Value",
"errorResult": null,
"fieldErrors": [
{
"codes": [
"typeMismatch.searchRequest.page",
"typeMismatch.page",
"typeMismatch.int",
"typeMismatch"
],
"arguments": [
{
"codes": [
"searchRequest.page",
"page"
],
"arguments": null,
"defaultMessage": "page",
"code": "page"
}
],
"defaultMessage": "Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'page'; For input string: \"222222z\"",
"objectName": "searchRequest",
"field": "page",
"rejectedValue": "222222z",
"bindingFailure": true,
"code": "typeMismatch"
}
]
}
๐ก 5xx status ๋ฐํ์
์๋ฒ ์ค๋ฅ ํน์ ์ผ์์ ์ธ ์๋ฒ์ค๋จ์ผ๋ก ์ ๋นํ ๋ฉ์ธ์ง๋ฅผ ์ ์ ์๊ฒ ์ถ๋ ฅ ๋ฐ๋๋๋ค.